home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
476-500
/
disk_500
/
wiconify
/
wiconify-source.lzh
/
Source
/
wMenu.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-04-25
|
7KB
|
205 lines
/*
* WICONIFY A utility that allows you to iconify any Intuition window
* on any screen, and to open WB windows on any screen.
*
* wMenu.c Definitions and static arrays of menu items.
*
* Copyright 1990 by Davide P. Cervone, all rights reserved.
* You may use this code, provided this copyright notice is kept intact.
*/
#define INTUITION_PREFERENCES_H /* don't need 'em */
#include <intuition/intuition.h>
#include "wMenu.h"
/*
* These macros do all the hard work of setting up the static menu
* items.
*/
#define CHECK(n,t,c,f,mx)\
{\
{NEXTMENU(n),MENU_LEFT,MENU_TOP+MENUH*(n+OFFSET),MENU_W,MENUH,\
(ITEMTEXT|HIGHCOMP|CHECKIT|ITEMENABLED|COMMSEQ)+(f),mx,\
(APTR)&MENU_NAME[n].IText,NULL,c,NULL,NULL},CHKTEXT(t)\
}
#define LABEL(n,t)\
{\
{NEXTMENU(n),MENU_LEFT,MENU_TOP+MENUH*n,MENU_W,MENUH,\
(ITEMTEXT|HIGHNONE|ITEMENABLED),0,(APTR)&MENU_NAME[n].IText,\
NULL,0,NULL,NULL},SUBTEXT(t)\
}
#define LABL2(n,t)\
{\
{NEXTMENU(n),MENU_LEFT,MENU_TOP+MENUH*(n-NS_DEPTH5+NS_DEPTH1),MENU_W,MENUH,\
(ITEMTEXT|HIGHNONE|ITEMENABLED),0,(APTR)&MENU_NAME[n].IText,\
NULL,0,NULL,NULL},SUBTEXT(t)\
}
#define DEPTH(n,t)\
{\
{NEXTMENU(n),MENU_LEFT+(n-NS_DEPTH1)*CHARW*3+6,MENU_TOP+MENUH*NS_DEPTH1,\
CHARW*3,MENUH,(ITEMTEXT|HIGHCOMP|ITEMENABLED),0,\
(APTR)&MENU_NAME[n].IText,NULL,0,NULL,NULL},DEPTEXT(t)\
}
#define SLINE(n,l)\
{\
{NEXTMENU(n),MENU_LEFT,MENU_TOP+MENUH*n,MENU_W,MENUH,\
ITEMTEXT|HIGHNONE,~(1<<n),(APTR)&MENU_NAME[n].IText,NULL,0,NULL,NULL},\
MENUTEXT(l)\
}
#define MITEM(n,t,c,f,s)\
{\
{NEXTMENU(n),MENU_L,MENUH*n,MENU_W,MENUH,\
(ITEMTEXT|HIGHCOMP|COMMSEQ|ITEMENABLED)+(f),~(1<<n),\
(APTR)&MENU_NAME[n].IText,NULL,c,(struct MenuItem *)s,NULL},\
MENUTEXT(t)\
}
#define MLINE(n,l)\
{\
{NEXTMENU(n),MENU_L,MENUH*n,MENU_W,MENUH,ITEMTEXT|HIGHNONE,~(1<<n),\
(APTR)&MENU_NAME[n].IText,NULL,0,NULL,NULL},MENUTEXT(l)\
}
static char Line[] = "--------------------";
static struct TextAttr wFont = {"topaz.font",8,FS_NORMAL,0};
/*
* The menus are declared as arrays of menu items, prelinked and
* initialized. The macros set up all the links, the names, the
* command key equivalents, and the mutual excludes. The data needed
* by the macros (MENU_NAME, etc) must be declared at the top of
* each menu (and removed at the bottom to avoid macro redefinition warnings)
*/
struct wMenuItem OpenWindowMenu[] =
{
#define MENU_NAME OpenWindowMenu
#define MENU_NUM SCREEN_MENU
#define MENU_W MENUW(MAX_OPEN_LEN)
#define MENU_TOP (-2*MENUH)
#define MENU_LEFT ((NEWSCREEN_LEN+4)*CHARW)
#define OFFSET 0
#define NEXTMENU(n) NEXT(n)
LABEL(OW_ON, "On:"),
CHECK(OW_ACTIVESCRN, "Active Screen", 'A', CHECKED, MX(OW_CURRENTWB)| MX(OW_REALWB)),
CHECK(OW_CURRENTWB, "Current WB", 'W', 0, MX(OW_ACTIVESCRN)| MX(OW_REALWB)),
CHECK(OW_REALWB, "Real WB", '=', 0, MX(OW_ACTIVESCRN)| MX(OW_CURRENTWB)),
SLINE(OW_LINE,&Line[0]),
#undef NEXTMENU
#define NEXTMENU(n) NULL
CHECK(OW_AUTORESIZE, "Size to Fit", 'S', CHECKED| MENUTOGGLE, 0)
#undef MENU_NAME
#undef MENU_NUM
#undef MENU_W
#undef MENU_TOP
#undef MENU_LEFT
#undef OFFSET
#undef NEXTMENU
};
struct wMenuItem NewScreenMenu[] =
{
#define MENU_NAME NewScreenMenu
#define MENU_NUM SCREEN_MENU
#define MENU_W MENUW(MAX_NSCR_LEN)
#define MENU_TOP (-MENUH)
#define MENU_LEFT ((NEWSCREEN_LEN+4)*CHARW)
#define OFFSET (-NS_DEPTH5+NS_DEPTH1)
#define NEXTMENU(n) NEXT(n)
LABEL(NS_DEPTH, "Depth:"),
DEPTH(NS_DEPTH1, "1"),
DEPTH(NS_DEPTH2, "2"),
DEPTH(NS_DEPTH3, "3"),
DEPTH(NS_DEPTH4, "4"),
DEPTH(NS_DEPTH5, "5"),
LABL2(NS_TYPE, "Type:"),
CHECK(NS_HIRES, "HIRES", 'H', CHECKED, MX(NS_LORES)),
CHECK(NS_LORES, "LORES", 'L', 0, MX(NS_HIRES)),
CHECK(NS_INTERLACE, "Interlace", 'I', MENUTOGGLE,0),
#undef NEXTMENU
#define NEXTMENU(n) NULL
CHECK(NS_HAM, "HAM", '+', MENUTOGGLE,0),
#undef MENU_NAME
#undef MENU_NUM
#undef MENU_W
#undef NEXTMENU
};
struct wMenuItem IconMenu[] =
{
#define MENU_NAME IconMenu
#define MENU_NUM ICON_MENU
#define MENU_W MENUW(MAX_ICON_LEN)
#define MENU_L -CHARW
#define NEXTMENU(n) NEXT(n)
MITEM(IM_OPEN, "Open", 'O',DISABLED,NULL),
MITEM(IM_CLOSE, "Close", 'C',DISABLED,NULL),
MITEM(IM_LOCK, "Lock", '#',DISABLED,NULL),
MITEM(IM_CLEANUP, "Clean Up", 'K',DISABLED,NULL),
MLINE(IM_LINE1,&Line[6]),
MITEM(IM_ORGANIZE, "Organize", 'R',DISABLED,NULL),
MITEM(IM_OPENALL, "Open All", 'P',DISABLED,NULL),
MLINE(IM_LINE2,&Line[6]),
MITEM(IM_ABOUT, "About...", '?',0,NULL),
#undef NEXTMENU
#define NEXTMENU(n) NULL
MITEM(IM_END, "End", 0,-COMMSEQ,NULL),
#undef MENU_NAME
#undef MENU_NUM
#undef MENU_W
#undef MENU_L
#undef NEXTMENU
};
struct wMenuItem ScreenMenu[] =
{
#define MENU_NAME ScreenMenu
#define MENU_NUM SCREEN_MENU
#define MENU_W MENUW(MAX_SCRN_LEN)
#define MENU_L -4*CHARW
#define NEXTMENU(n) NEXT(n)
MITEM(SM_TOFRONT, "To Front", '>',0,NULL),
MITEM(SM_TOBACK, "To Back", '<',0,NULL),
MITEM(SM_WBTOFRONT, "WB To Front", 'N',0,NULL),
MLINE(SM_LINE1,&Line[2]),
MITEM(SM_TOGGLE, "Toggle Title", 'T',0,NULL),
MITEM(SM_ICONIFY, "Iconify", '*',0,NULL),
MLINE(SM_LINE2,&Line[2]),
MITEM(SM_NEWCLI, "New CLI", '.',0,NULL),
MITEM(SM_MAKEWB, "Make WB", 'M',0,NULL),
MITEM(SM_OPENWINDOW, "Open Windows", 0,-COMMSEQ,&OpenWindowMenu[0]),
MITEM(SM_NEWSCREEN, "New Screen", 0,-COMMSEQ,&NewScreenMenu[0]),
#undef NEXTMENU
#define NEXTMENU(n) NULL
MITEM(SM_CLOSESCREEN,"Close Screen", 0,-COMMSEQ,NULL),
#undef MENU_NAME
#undef MENU_NUM
#undef MENU_W
#undef NEXTMENU
};
#define MENU(i,t,n,l,s)\
{&wMenu[i+1],l*CHARW+10,0,(n+1)*CHARW,MENUH,MENUENABLED,t,&s[0].Item,0,0,0,0}
#define LAST(i,t,n,l,s)\
{NULL,l*CHARW+10,0,(n+1)*CHARW,MENUH,MENUENABLED,t,&s[0].Item,0,0,0,0}
struct Menu wMenu[] =
{
MENU(ICON_MENU, "Icon", 4, 0, IconMenu),
LAST(SCREEN_MENU, "Screen", 6, 6, ScreenMenu),
};